package com.education.ai.service;

import com.education.ai.entity.MediaResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import java.util.List;

/**
 * 多媒体资源服务接口
 * 提供图片和视频资源的生成与管理功能
 */
public interface MediaResourceService {
    
    /**
     * 获取所有多媒体资源
     */
    List<MediaResource> getAllMediaResources();
    
    /**
     * 根据ID获取多媒体资源
     */
    MediaResource getMediaResourceById(Long id);
    
    /**
     * 根据资源类型获取多媒体资源
     */
    List<MediaResource> getMediaResourcesByType(String resourceType);
    
    /**
     * 根据学科获取多媒体资源
     */
    List<MediaResource> getMediaResourcesBySubject(String subject);
    
    /**
     * 根据年级获取多媒体资源
     */
    List<MediaResource> getMediaResourcesByGrade(String grade);
    
    /**
     * 保存多媒体资源
     */
    MediaResource saveMediaResource(MediaResource mediaResource);
    
    /**
     * 删除多媒体资源
     */
    void deleteMediaResource(Long id);
    
    /**
     * 根据学科、年级、主题生成教学图片
     * 使用通义万象的wanx2.1-t2i-turbo模型生成高质量教学图片
     * 
     * @param subject 学科名称
     * @param grade 年级
     * @param topic 主题
     * @param description 图片详细描述
     * @return 包含图片信息的MediaResource对象
     */
    MediaResource generateImage(String subject, String grade, String topic, String description);
    
    /**
     * 根据学科、年级、主题生成教学视频
     * 使用通义万象的wanx2.1-t2v-turbo模型生成高质量教学视频
     * 
     * @param subject 学科名称
     * @param grade 年级
     * @param topic 主题
     * @param description 视频详细描述
     * @param duration 视频时长（秒）
     * @return 包含视频信息的MediaResource对象
     */
    MediaResource generateVideo(String subject, String grade, String topic, String description, Integer duration);
    
    /**
     * 根据学科、年级、主题生成教学视频，并指定教师ID
     * 使用通义万象的wanx2.1-t2v-turbo模型生成高质量教学视频
     * 
     * @param subject 学科名称
     * @param grade 年级
     * @param topic 主题
     * @param description 视频详细描述
     * @param duration 视频时长（秒）
     * @param teacherId 教师工号
     * @return 包含视频信息的MediaResource对象
     */
    MediaResource generateVideo(String subject, String grade, String topic, String description, Integer duration, String teacherId);

    /**
     * 使用通义万象wanx2.1-t2i-turbo模型生成教学图片
     * 
     * @param subject 学科名称
     * @param grade 年级
     * @param topic 主题
     * @param description 描述信息
     * @param imageCount 生成图片数量
     * @param size 图片尺寸
     * @param teacherId 教师工号
     * @return 包含图片信息的MediaResource对象
     */
    MediaResource generateImageWithWanxiang(String subject, String grade, String topic, String description, int imageCount, String size, String teacherId);

    /**
     * 根据教师ID分页查询多媒体资源
     * 
     * @param teacherId 教师工号
     * @param pageable 分页参数
     * @return 包含多媒体资源的分页对象
     */
    Page<MediaResource> getMediaResourcesByTeacherId(String teacherId, Pageable pageable);
} 